// 采用 bind 为 函数绑定 this 后再调用函数

function welcome( name ){
    console.log( `欢迎${name}莅临云创动力指导工作`);
    console.log( this );
}

// 非严格模式下，如果采用 bind 为函数绑定 this 变量，
// 如果 bind 的参数为 null 或 undefined ，则 welcome 函数内 this 表示 globalThis
let w = welcome.bind( undefined ); // 绑定 this
w( '张娇娇' );

let p = { id: 1 , name: '张劲松' , gender: '靓仔' }
w = welcome.bind( p ); // 为 welcome 函数绑定 this
w( '张总' );

function hello( name ){
    'use strict';
    console.log( `欢迎${name}莅临云创动力指导工作`);
    console.log( this );
}

// 严格模式下，采用 bind 为函数绑定 this 时，
// 如果 bind 的参数为 null 则 hello 函数内 this 为 null
// 如果 bind 的参数为 undefined 则 hello 函数内 this 为 undefined
let h = hello.bind( null );
h( '任丽' );

let q = { id: 2 , name: '吴晓龙' , gender: '靓仔' }
h = hello.bind( q );
h( '吴总' );